home *** CD-ROM | disk | FTP | other *** search
- unit exeend;
-
- INTERFACE
-
- var
- endofexe,sizeofdata:longint;
- data:boolean;
-
- function getexeinfo(const name:string;var data:boolean; var endofexe,sizeofdata:longint):boolean;
-
- IMPLEMENTATION
-
- function getexeinfo(const name:string; var data:boolean; var endofexe,sizeofdata:longint):boolean;
- const
- magic=$5a4d; {'mz'}
- var
- header:array[1..3]of word; {id,bytemod,pages}
- br:word;
- f:file;
- begin
- getexeinfo:=false;
- data:=false;
- endofexe:=0;
- sizeofdata:=0;
- if(name='.')or(name='')then exit;
- assign(f,name);
- {$i-} reset(f,1); {$i+}
- if(ioresult<>0)then exit;
- {$i-} blockread(f,header,sizeof(header),br); {$i+}
- if(ioresult<>0)then exit;
- if(br<>sizeof(header))or(header[1]<>magic)then exit;
- endofexe:=longint(header[3]-1)*512+header[2];
- sizeofdata:=(filesize(f)-endofexe);
- close(f);
- data:=(sizeofdata>0);
- getexeinfo:=true;
- end;
-
- function dosmajor:byte; assembler;
- asm
- mov ah,030h
- int 21h
- end;
-
- begin
- if(dosmajor>=3)then getexeinfo(paramstr(0),data,endofexe,sizeofdata)else
- getexeinfo('.',data,endofexe,sizeofdata);
- end.